#include "ClasseNoListaL.h"
#include "ClasseFila.h"

//====================================
Fila::Fila()
{
  inicio = NULL;
  final = NULL;
  tamanho = 0;
}
//====================================
bool Fila::Empty()
{
  if (inicio== NULL && final==NULL)
  return true;
  else
  return false;
}
//====================================
No * Fila::getInicio()
{
  return inicio;
}
//====================================
No * Fila::getFinal()
{
  return final;
}
//====================================
int Fila::getTamanho()
{
  return tamanho;
}
//====================================
void Fila::Insere(String entrada)
{
 if (!(Empty()))
 {
  No * ponteiro = new No(entrada);
  final->setProximo(ponteiro);
  final = ponteiro;
 }
 else
 {
  No * ponteiro = new No(entrada);
  inicio = ponteiro;
  final = ponteiro;
 }
 tamanho ++;
}
//====================================
String Fila::Remove()
{
 String retorno;
 No * deletado= NULL;
 if (!(Empty()))
 {
   retorno = inicio->getPalavra();
   deletado = inicio;
   if (inicio != final)
   {
     inicio = inicio->getProximo();
   }
   else
   {
     inicio = NULL;
     final = NULL;
   }
   deletado->~No();
   deletado = NULL;
   tamanho --;
   return(retorno);
 }
 else
 {
   return "";
 }
}
//======================================
String Fila::Verifica()
{
 if (!(Empty()))
 {
   return(inicio->getPalavra());
 }
 else
 {
   return "";
 }
}
//=====================================
String* Fila::VetorGeral()
{
  int contador;
  No * percorre = getInicio();
//  String vg[tamanho];     // Compilador nao aceita dessa forma
     // Alocacao dinamica sem um delete[] correspondente nesta funcao:
     // necessita ser desalocado em codigo externo
  String * vg = new String[tamanho];

  for (contador=0; contador<tamanho; contador++)
  {
    vg[contador] = percorre->getPalavra();
    percorre = percorre->getProximo();
  }
  return vg;
}

//=====================================
